package com.zxy.zxyrpc.model;

import cn.hutool.core.util.StrUtil;
import lombok.Data;

/**
 * 服务元信息（注册信息）
 *
 * @author zxy
 * @since 2025/5/18
 **/
@Data
public class ServiceMetaInfo {
    /**
     * 服务名
     */
    private String serviceName;
    /**
     * 服务版本号
     */
    private String serviceVersion;
    /**
     * 服务域名
     */
    private String serviceHost;
    /**
     * 服务端口号
     */
    private Integer servicePort;

    /**
     * 服务权重（用于加权负载）
     * */
    private Integer weight;
    /**
     * todo 服务分组（待实现）
     */
    private String serviceGroup = "default";
    /**
     * todo 服务注册时间（待实现）
     */
    private Data creatTime;

    /**
     * 获取服务键名（文件夹）
     */
    public String getServiceKey() {
        // 后续可拓展服务分组
        // return String.format("%s:%s:%s",serviceName,serviceVersion,serviceGroup);
        return String.format("%s:%s", serviceName, serviceVersion);
    }

    /**
     * 获取服务注册节点键名（文件）
     */
    public String getServiceNodeKey() {
        return String.format("%s:%s:%s", getServiceKey(), serviceHost, servicePort);
    }

    /**
     * 获取服务地址
     */
    public String getServiceAddress() {
        if (!StrUtil.contains(serviceHost, "http")) {
            return String.format("http://%s:%s", serviceHost, servicePort);
        }
        return String.format("%s:%s", serviceHost, servicePort);
    }
}
